vi / vim的介绍
1. vi 介绍
- vi 编辑器是所有 Unix 及 Linux 系统下标准的编辑器,它的强大不逊色于任何最新的文本编辑器。由于 对Unix及Linux系统的任何版本,vi编辑器是完全相同的,因此您可以在其他任何介绍vi的地方进一步了解它。Vi也是Linux中最基本的文本编辑器
2. vim 介绍
- vim是从 vi 发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。
- 简单的来说, vi 是老式的字处理器,不过功能已经很齐全了,但是还是有可以进步的地方。 vim 则可以说是程序开发者的一项很好用的工具
3. vi 和 vim 的区别
- vi 相当于 window 下的 记事本
- vim 相当于 代码编辑器
4. vi/vim 的基本概念
- 基本上 vi 和 vim 可以分为三种状态,分别是 命令模式(command mode)、插入模式(Insert mode) 和 底行模式(last line mode),各模式的功能区分如下
- 命令行模式 (Command Mode)
- 控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入 插入模式(Insert mode)下,或者到 底行模式(last line mode)
- 插入模式(Insert Mode)
- 只有在 插入模式(Insert mode) 下,才可以做文字输入,按「ESC」键可回到 命令行模式(Command Mode)
- 底行模式(Last Line Mode)
- 将文件保存或退出 vi 编辑器,也可以设置编辑环境,如寻找字符串、列出行号……等
- 不过一般我们在使用时把 vi 简化成两个模式,就是将 底行模式(Last Line Mode) 也算入 命令行模式 (Command Mode)
5. vi/vim 的按键图

6. vi/vim 的按键图

vi 的使用
1. 下载 vim
- 如果当前的 Linux 没有 vim,就需要自行下载
yum install vim -y
1. 进入命令行模式
- 进入命令行模式也称为打开 vi/vim 编辑器 或 打开文件
- 命令:
- vi/vim 文件名.后缀名
- vi/vim 路径/文件名.后缀名
vi test.py
vim test.py
- 注意: 如果通过 vi/vim 打开一个不存在的文件,那么 vi/vim 就会在当前或指定的路径下创建该文件
- 可以通过观察 vi/vim 下的文件名后面是否带有 [New File],如果有就代表该文件不是已存在的文件而是一个通过 vi/vim 所创建的文件

2. 命令模式下的相关命令
- 在命令模式下敲击键盘动作会被vi/vim识别为命令,而非输入字符。比如我们此时按下i,并不会输入一个字符,i被当作了一个命令执行
- 移动光标
h 或 向左箭头键(←) | 光标向左移动一个字符 |
j 或 向下箭头键(↓) | 光标向下移动一个字符 |
k 或 向上箭头键(↑) | 光标向上移动一个字符 |
l 或 向右箭头键(→) | 光标向右移动一个字符 |
w | 移动光标到下一个单词的首字母上 |
e | 移动光标到下一个单词的尾字母上 |
b | 移动光标到上一个单词 |
数字0 | 移动光标到本行开头 |
$ | 移动光标到本行结尾 |
H | 移动光标到屏幕首行 |
M | 移动到光标到屏幕的中间一行 |
L | 移动光标到屏幕的尾行 |
gg | 移动光标到文档的首行 |
G | 移动光标到文档尾行 |
- 查找
/需要查找的内容 注意: 内容无需加'' 或 "" 进行查找 |
|
?需要查找的内容 注意: 内容无需加'' 或 "" 进行查找 |
|
* |
|
# |
|
gd |
|
% |
|
- 复制、粘贴、删除
yy | 拷贝光标所在行 |
p | 粘贴yy所复制的内容 |
dd | 删除光标所在行 |
D | 删除当前光标到行尾的内容 |
dG | 删除当前行到文档尾部的内容 |
x | 删除光标所在的字符 |
u | 撤销上一步的操作 |
- 数字 与 命令
数字yy | 3yy -> 拷贝光标所在的后3行 |
数字dd | 5dd -> 删除光标所在的后5行 |
数字j | 5j -> 将当前光标先下移动5行 |
数字k | 5k -> 将当前光标先上移动5行 |
数字h | 10h -> 将当前光标先左移动10个字符 |
数字l | 10l -> 将当前光标先右移动10个字符 |
数字空格 | 10空格 -> 将当前光标先右移动10个字符 |
2. 进入插入模式
- 在命令行模式下按下对应的字母进入插入模式,且只有在插入模式下才能对文件进行编辑
i | 在光标前 |
I | 在光标行首 |
a | 光标后 |
A | 在光标行尾 |
o | 在当前行之下新开一行 |
O | 在当前行之上新开一行 |
r | 替换当前字符 |
R | 替换当前字符及其后的字符,直至按ESC键 |
s | 从当前光标位置处开始,以输入的文本替代指定数目的字符 |
S | 删除指定数目的行,并以所输入文本代替之 |

3. 进入底行模式
- 如果在命令行模式下,按下 “:” 进入底行模式
- 如果在插入模式下,按下 “esc” 进入 命令行模式,然后按下 “:” 进入底行模式
- 底行模式的相关命令
: 符号 | 代表进入底行模式 |
! 符号 | 代表强制的 |
:w | 保存文件 |
:w! | 强制保存文件 |
:q | 退出 vi 编辑器,当文件被修改后且没有保存文件是无法通过 :q 直接退出的,需要通过 :q! 强制退出 |
:q! | 强制退出 vi 编辑器 |
:wq | 保存并退出 vi 编辑器 |
:x | 保存并退出 vi 编辑器,等同于 :wq |
:wq! | 强制保存并退出 vi 编辑器 |
:set nu | 显示行号 |
:set nonu | 取消行号 |
:数字 | 将光标定位到你所指定的行号上 |
:! 命令 |
|
esc按键 | 退出底行模式 |